package com.example.webpractice.vo;

import com.baomidou.mybatisplus.core.metadata.IPage;
import org.springframework.beans.BeanUtils;

public class Po2Vo {

    public static <Po, Vo> PageVo toVoPage(IPage<Po> p, Class<Vo> voClass) {
        if (voClass == null) {
            return new PageVo(p.getRecords(), p.getTotal(), p.getSize(), p.getCurrent());
        }
        IPage<Vo> pageVo = p.convert(entity -> {
            Vo vo = null;
            try {
                vo = voClass.getDeclaredConstructor().newInstance();
            } catch (Exception e) {
                e.printStackTrace();
            }
            // 将 entity 对象的属性复制到 vo 对象中
            BeanUtils.copyProperties(entity, vo);
            return vo;
        });
        return new PageVo(pageVo.getRecords(), pageVo.getTotal(), pageVo.getSize(), pageVo.getCurrent());
    }
}
